package in.rob.client.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import net.callumtaylor.swipetorefresh.view.RefreshableListView;
import net.callumtaylor.swipetorefresh.view.RefreshableScrollView;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.Collections;
import in.controller.adapter.DraftAdapter;
import in.data.stream.DraftPostStream;
import in.data.stream.base.Stream;
import in.lib.Constants;
import in.lib.loader.Loader;
import in.lib.loader.Loader.OnFileLoadedListener;
import in.lib.manager.CacheManager;
import in.lib.utils.Debug;
import in.lib.utils.Views.Injectable;
import in.model.AdnModel;
import in.model.DraftPost;
import in.rob.client.dialog.NewPostDialog;
import in.rob.client.fragment.base.StreamFragment;
@Injectable
public class DraftPostsFragment extends StreamFragment
{
@Override public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
((RefreshableListView)getListView()).setCanRefresh(false);
((RefreshableScrollView)getEmpty()).setCanRefresh(false);
}
@Override public void setupAdapter()
{
setAdapter(new DraftAdapter(getContext()));
}
@Override public void onDataReady()
{
getProgress().setVisibility(View.GONE);
}
@Override public void initData()
{
DraftCacheLoader loader = new DraftCacheLoader();
loader.setOnFileLoadedListener(new OnFileLoadedListener<DraftPostStream>()
{
@Override public void onFileLoaded(DraftPostStream data, long age)
{
if (data != null)
{
getAdapter().setStream(data);
getAdapter().notifyDataSetChanged();
}
onDataReady();
}
});
loader.execute();
}
@Override public void onListItemClick(AdnModel item)
{
Intent postIntent = new Intent(getContext(), NewPostDialog.class);
postIntent.putExtra(Constants.EXTRA_DRAFT_POST, (Parcelable)item);
getActivity().startActivity(postIntent);
}
@Override public void fetchStream(String lastId, boolean append){}
@Override public void handleResponse(Stream stream, boolean append){}
@Override public void setupFooters(){}
@Override public Class getCacheClass()
{
return DraftPostStream.class;
}
public static class DraftCacheLoader extends Loader<DraftPostStream>
{
@Override public DraftPostStream doInBackground(String... params)
{
try
{
DraftPostStream stream = new DraftPostStream();
File files = new File(CacheManager.getInstance().getCachePath());
String[] drafts = files.list(new FilenameFilter()
{
@Override public boolean accept(File dir, String filename)
{
return filename.startsWith("post_");
}
});
Arrays.sort(drafts, Collections.reverseOrder());
for (String draft : drafts)
{
DraftPost post = new DraftPost().load(draft.replace("post_", ""));
if (post != null)
{
stream.getItems().add(post);
}
}
return stream;
}
catch (Exception e)
{
Debug.out(e);
}
return null;
}
}
}